package com.itheima.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.mapper.EmproleMapper;
import com.itheima.pojo.AssignRolesRequest;
import com.itheima.pojo.Emprole;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import com.itheima.service.EmproleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/emprole")
public class EmproleController {
    @Autowired
    private EmproleService emproleService;

    // 分配角色
    @PutMapping("/user/assignRoles")
    public Result update1(@RequestBody AssignRolesRequest request) {
        // 从请求参数对象中获取员工ID
        Integer id = request.getId();
        // 从请求参数对象中获取要分配的角色ID列表
        List<Integer> roleIds = request.getRoleIds();

        // 创建LambdaQueryWrapper查询条件构建器，用于查询与指定员工ID关联的员工角色记录
        LambdaQueryWrapper<Emprole> emproleLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 设置查询条件，即员工ID等于传入的id
        emproleLambdaQueryWrapper.eq(Emprole::getEmpId, id);
        // 根据上述查询条件，调用emproleService的remove方法，删除该员工原有的角色关联记录
        emproleService.remove(emproleLambdaQueryWrapper);

        // 创建一个ArrayList用于存储新的员工角色关联对象
        ArrayList<Emprole> emproles = new ArrayList<>();
        for (Integer roleId : roleIds) {
            Emprole emprole = new Emprole();
            // 设置该关联对象的员工ID
            emprole.setEmpId(id);
            // 设置该关联对象的角色ID
            emprole.setRoleId(roleId);
            emproles.add(emprole);
        }
        emproleService.saveBatch(emproles);
        // 返回操作成功的结果，并附带提示信息“保存成功”
        return Result.success("保存成功");
    }

}
